package material.singleton;

public class SingletonVolatile {
    /*利用一个静态变量来记录Singleton类的唯一实例
     * volatile关键词确保当uniquerSingleton变量被初始化成SingletonVolatile时，
     * 多个线程正确的处理uniquerSingleton变量*/
    private static volatile SingletonVolatile uniquerSingleton;


    private static SingletonVolatile getInstance() {//将构造器声明为私有，只有来自Singleton类内才可以调用构造器
        if (uniquerSingleton == null) {
            /*如果对象不存在，就利用私有构造器产生 一个实例，
            并把它赋值到uniquerSingleton静态变量中，
            如果我们不需要，它就永远不会产生，这就是延迟实例化*/
            uniquerSingleton = new SingletonVolatile();
        }
        return uniquerSingleton;
    }

}
